package com.edt.ichannel.api.dao;

import com.edt.ichannel.api.entiy.local.OrderChannel;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @author 肖瑶
 */
public interface OrderChannelDao {
    /**
     * 更改订单状态(受理结果回调使用)
     *
     * @param orderChannel 实体
     */
    void updateOrderChannelState(OrderChannel orderChannel);

    /**
     * 根据日期查询订单
     *
     * @param dateStr 精确到日
     * @param synType 匹配系统 1经分 2 信息化
     * @return 订单列表
     */
    List<OrderChannel> selectOrderChannelList(@Param("dateStr") String dateStr, @Param("synType") int synType);

    /**
     * 根据日期查询订单
     *
     * @param dateStr, synType
     *                 日期 匹配系统 1经分 2 信息化
     * @return java.util.List<com.edt.ichannel.api.entiy.local.OrderChannel>
     * selectOrderChannelMonthList
     * @author 孙梁
     * 2018/6/11 9:47
     */
    List<OrderChannel> selectOrderChannelMonthList(@Param("dateStr") String dateStr, @Param("synType") int synType);

    /**
     * 根据日期查询订单
     *
     * @param dateStr, synType
     *                 日期 匹配系统 1经分 2 信息化
     * @return java.util.List<com.edt.ichannel.api.entiy.local.OrderChannel>
     * selectOrderChannelMonthList
     * @author 孙梁
     * 2018/6/11 9:47
     */
    List<OrderChannel> selectOrderChannelListXXH(@Param("dateStr") String dateStr, @Param("synType") int synType);

//    List<OrderChannel> selectOrderChannelMonthListXXH(@Param("dateStr") String dateStr, @Param("synType") int synType);

    /**
     * 根据时间字符串 查询特定人的订单
     *
     * @param dataStr yyyymmdd
     * @return com.edt.common.bean.ActionResult
     * 同步结果
     * @author 孙梁
     * 2018/8/3 10:52
     */
    List<OrderChannel> selectActivityStaff(String dataStr);

    /**
     * 查询没有首充的订单
     *
     * @param dayStr 日期字符串 精确到天
     * @return java.util.List<com.edt.ichannel.api.entiy.local.OrderChannel>
     * selectOrderChannelWithoutFirstMoneyByDay
     * @author 孙梁
     * 2018/8/23 9:19
     */
    List<OrderChannel> selectOrderChannelCkWithoutCommissionByDay(@Param("dayStr") String dayStr);

    /**
     * 查询给定天成功非融合数据
     *
     * @param dayStr 时间字符串
     * @return java.util.List<com.edt.ichannel.api.entiy.local.OrderChannel>
     * 查询结果
     * @author 孙梁
     * 2018/9/7 16:08
     */
    List<OrderChannel> selectOrderChannelDay(@Param("dayStr") String dayStr, @Param("synType") int synType);

    /**
     * 宽带数据并且number_tel不为空的
     *
     * @param dayStr 时间字符串
     * @return java.util.List<com.edt.ichannel.api.entiy.local.OrderChannel>
     * 查询结果
     * @author 孙梁
     * 2018/9/26 14:37
     */
    List<OrderChannel> selectOrderChannelKdWithoutCommissionByDay(@Param("dayStr") String dayStr);

    /**
     * 根据手机号查询最近一条订单
     *
     * @param phoneNumber 手机号
     * @return com.edt.ichannel.api.entiy.local.OrderChannel
     * 返回结果
     * @author 孙梁
     * 2018/9/28 14:59
     */
    OrderChannel selectOrderChannelByNumberPhone(@Param("phoneNumber") String phoneNumber);

    OrderChannel selectOrderChannelByOrderCode(@Param("orderCode") String orderCode);

    List<OrderChannel> selectOrderChannelCkCWithoutCommissionByDay(@Param("day") String day);

    List<OrderChannel> selectOrderChannelKdCWithoutCommissionByDay(@Param("day") String day);


    List<OrderChannel> getNeedBFOrder(@Param("cityCode") String cityCode, @Param("productId") String productId
            , @Param("typeStr") String typeStr, @Param("ruleDate") Date ruleDate);

    /**
     * 将发送过得数据状态变更
     */
    void updateD05AddToIsPushOver();

    /**
     * 获取推送给放心权益中心的订单数据
     *
     * @param dayStr dayStr
     * @return List<OrderChannel>
     * @author 李爽
     * @date 2019/1/25 10:51
     */
    List<OrderChannel> selectOrderChannelDayForFXQYZX(@Param("dayStr") String dayStr);
}
